#include <stdio.h>
#include <stdlib.h>
#include "modifier_per.h"
#include "menu_modifier_per.h"
#include <string.h>
#include "Personnel.h"


void modifier_ID_per(char fichier[],char tmp2[])
{
	char tmp[]="tmp.txt";
	int res,res1,res2,res3,l;
	FILE *f ;
	FILE *t ;
	FILE *y;
	personnel p;
	int ID;
	printf("\n Donner l'ID du personnel que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(personnel),1,t) ;}
					if (ID==p.ID)
					     {do {
						res=0;
						res1=0;
						res2=0;
						res3=0;
						printf("Lancien Id est: %d \n",p.ID);
						printf("Saisir nouveau identifiant ID \n");
						scanf("%d",&p.ID);
						l=longueur_per(p.ID);
						y=fopen("tmp2.txt","ab");
						if (y!=NULL){
  						while(fread(&p,sizeof(personnel),1,y)!=0 && res1==0)
							{
								if(p.ID==p.ID)
								{res1=1;}
 							}
						}
						f=fopen(fichier,"rb");
  						if (f!=NULL){
  						while(fread(&p,sizeof(personnel),1,f)!=0 && res==0)
							{
								if(p.ID==p.ID)
									{res=1;}
 							}
						}
						if((res==1)||(res1==1)){
						printf("ID deja existe\n");
						res2=1;}
 
						if((p.ID<0) || (l!=5)){
						res3=1;
						printf("ID incorrect\n");}
						  }
						while (res3==1 || res2==1);
						fwrite(&p,sizeof(personnel),1,t) ;}
				}
		
	printf("L'ID du personnel a été modifié\n"); }
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(personnel),1,t)!=0)
		{fwrite(&p,sizeof(personnel),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}


void modifier_nom_per( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	personnel p;
	int ID;
	printf("\n Donner l'ID du personnel que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(personnel),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancien nom est: %s \n",p.nom);
						printf("Saisir le nouveau Nom \n");fflush(stdin);
						scanf("%s",p.nom);
						fwrite(&p,sizeof(personnel),1,t) ;}
				}
	printf("Le nom du personnel a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(personnel),1,t)!=0)
		{fwrite(&p,sizeof(personnel),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}


void modifier_prenom_per( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	personnel p;
	int ID;
	printf("\n Donner l'ID du personnel que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(personnel),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancien prenom est: %s \n",p.prenom);
						printf("Saisir le nouveau Prenom \n");fflush(stdin);
						scanf("%s",p.prenom);
						fwrite(&p,sizeof(personnel),1,t) ;}
				}
	printf("Le prenom du personnel a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(personnel),1,t)!=0)
		{fwrite(&p,sizeof(personnel),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_cin_per( char fichier[],char tmp2[])
{
int c_cin=0;
int l=0;
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	FILE *y;
	personnel p;
	int ID;
	printf("\n Donner l'ID du personnel que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(personnel),1,t) ;}
					if (ID==p.ID)
					        {
						do {
						printf("Lancienne CIN est: %ld \n",p.cin);
						printf("Saisir la nouvelle CIN \n");
						scanf("%ld",&p.cin);
						c_cin=comparer_cin_per(&p);
						l=longueur_per(p.cin);
						}
						while ((l!=8) || (p.cin <0) || (c_cin==1));
						fwrite(&p,sizeof(personnel),1,t) ;}
				}
	printf("La CIN du personnel a été modifiée\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(personnel),1,t)!=0)
		{fwrite(&p,sizeof(personnel),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}
void modifier_age_per( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	personnel p;
	int ID;
	printf("\n Donner l'ID du personnel que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(personnel),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancien age est: %d \n",p.age);
						printf("Saisir le nouveau Age \n");fflush(stdin);
						scanf("%d",&p.age);
						fwrite(&p,sizeof(personnel),1,t) ;}
				}
	printf("L'age du personnel a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(personnel),1,t)!=0)
		{fwrite(&p,sizeof(personnel),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}


void modifier_sexe_per( char fichier[])
{
char ch_sexe1[20]= "masculin";
char ch_sexe2[20]= "feminin";
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	personnel p;
	int ID;
	printf("\n Donner l'ID du personnel que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(personnel),1,t) ;}
					if (ID==p.ID)
					        {
						do
							{
							printf("Lancien sexe est: %s \n",p.sexe);
							printf("Choisir le nouveau sexe: feminin/masculin \n");fflush(stdin);
							scanf("%s",p.sexe);} 
							while ((strcmp(p.sexe,ch_sexe1)!=0)&&(strcmp(p.sexe,ch_sexe2)!=0));
						fwrite(&p,sizeof(personnel),1,t) ;}
				}
		
	printf("Le sexe du personnel a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(personnel),1,t)!=0)
		{fwrite(&p,sizeof(personnel),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}


void modifier_num_tel_per( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	personnel p;
	int ID;
	printf("\n Donner l'ID du personnel que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(personnel),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancien numero de telephone est: %ld \n",p.numero_telephone);
						printf("Saisir le nouveau numero de téléphone \n");fflush(stdin);
						scanf("%ld",&p.numero_telephone);
						fwrite(&p,sizeof(personnel),1,t) ;}
				}
	printf("Le numéro de téléphone du personnel a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(personnel),1,t)!=0)
		{fwrite(&p,sizeof(personnel),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}



void modifier_adresse_per( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	personnel p;
	int ID;
	char adresse;
	printf("\n Donner l'ID du personnel que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(personnel),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancienne adresse est: %s \n",p.adresse);
						printf("Saisir la nouvelle adresse \n");fflush(stdin);
						scanf("%s",p.adresse);
						fwrite(&p,sizeof(personnel),1,t) ;}
				}
	printf("L'adresse du personnel a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(personnel),1,t)!=0)
		{fwrite(&p,sizeof(personnel),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_poste_per( char fichier[])
{
char ch_poste1[20]= "medecin";
char ch_poste2[20]= "infirmier";
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	personnel p;
	int ID;
	char poste;
	printf("\n Donner l'ID du personnel que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(personnel),1,t) ;}
					if (ID==p.ID)
					        {
						do
						{
							printf("Lancien poste est: %s \n",p.poste);
							printf("Choisir le poste: medecin/infirmier \n");fflush(stdin);
							scanf("%s",p.poste);
							} while ((strcmp(p.poste,ch_poste1)!=0)&&(strcmp(p.poste,ch_poste2)!=0));
						fwrite(&p,sizeof(personnel),1,t) ;}
				}
	printf("Le poste du personnel a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(personnel),1,t)!=0)
		{fwrite(&p,sizeof(personnel),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_date_d_embauche_per( char fichier[])
{
char ch_poste1[20]= "medecin";
char ch_poste2[20]= "infirmier";
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	personnel p;
	int ID,test_j=0,l2=0;
	struct date date_d_embauche;
	printf("\n Donner l'ID du personnel que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(personnel),1,t) ;}
					if (ID==p.ID)
					        {
			do {
			printf("Lanciene date d'embauche est: %d %d %d \n",p.date_d_embauche.jour,p.date_d_embauche.mois,p.date_d_embauche.annee);
			printf("Donnez la nouvelle date d'embauche: jour mois annee \n");
			scanf("%d %d %d",&(p.date_d_embauche.jour),&(p.date_d_embauche.mois),&(p.date_d_embauche.annee));
			l2=longueur_per(p.date_d_embauche.annee);
			test_j=test_jour_per(&p);
			}
			while ((p.date_d_embauche.jour<=0)||(p.date_d_embauche.mois<=0)||(p.date_d_embauche.mois>12)||(p.date_d_embauche.annee<=0)||(l2!=4)||(test_j==1));
						fwrite(&p,sizeof(personnel),1,t) ;}
				}
	printf("La date d'embauche du personnel a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(personnel),1,t)!=0)
		{fwrite(&p,sizeof(personnel),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_personnel()
{
int choix;
char tmp2[]="tmp2.txt";
char fichier[]="fichier_personnel";
do{
afficher_menu_modifier_per();
choix=choix_menu_modifier_per();

switch (choix) {
	case 1: modifier_ID_per(fichier,tmp2) ;
	break;
	case 2: modifier_nom_per(fichier) ;
	break;
	case 3: modifier_prenom_per(fichier) ;
	break;
	case 4: modifier_cin_per(fichier,tmp2) ;
	break;
	case 5: modifier_age_per(fichier) ;
	break;
	case 6: modifier_sexe_per(fichier) ;
	break;
	case 7: modifier_num_tel_per(fichier) ;
	break;
	case 8: modifier_adresse_per(fichier) ;
	break;
	case 9: modifier_poste_per(fichier) ;
	break;
	case 10: modifier_date_d_embauche_per(fichier) ;
	break;
	case 0: printf("Retour au menu gestion des personnels")  ;
	break;break;
	default: printf("\n Mauvais Choix\n");
	}
}while (choix!=0);
}
